package com.niuwa.p2p.service.user;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.niuwa.p2p.core.mvc.entity.PageBean;
import com.niuwa.p2p.core.mvc.entity.Pagination;
import com.niuwa.p2p.entity.user.User;


/**
 * 
 * @ClassName: UserService
 * @Descriptio:用户接口     
 * @author:    jishengjun
 */

public interface UserService {
		
	/**
	 * 选取全部用户
	 * 
	 * @return List<User> 用户集合
	 * @throws Exception
	 */
	public List<User> listUserAll() throws Exception ;
	

	/**
	 * 新增用户
	 * 
	 * @param user 添加的用户对象
	 * @throws Exception
	 */
	public void saveUser(User user) throws Exception ;	
	
	/**
	 * 更新用户
	 * 
	 * @param user 更新的用户对象
	 * @throws Exception
	 */
	public int updateUser(User user,String loginName) throws Exception ;	
	
	/**
	 * 删除用户
	 * 
	 * @param user 删除的用户对象
	 * @throws Exception
	 */
	public int deleteUser(User user) throws Exception ;
	
	/**
	 * 取得用户
	 * 
	 * @param userId 用户Id
	 * @return User 选取的用户
	 * @throws Exception
	 */
	public User getUser(long userId) throws Exception ;	


	/**
	 * 取得用户
	 * 
	 * @param loginName 登陆名
	 * @return User 选取的用户
	 * @throws Exception
	 */
	public User getUser(String loginName) throws Exception ;	
	
	
	/**
	 * 分页查询用户集合
	 * 根据paramMap，选取需要的用户集合 
	 * 
	 * @param paramMap 过滤得条件Map
	 * @return Pagination<User> 分页信息与分页数据集合（用户集合） 
	 */
	public PageBean<User> search(Map<String, Object> paramMap);

	
	
	/**
	 * 根据用户名和密码获得用户
	 * @param loginName
	 * @param password
	 * @return
	 */
	
	public User getUser(String loginName,String password);
	
	/**
	 * 根据用户名和密码获取用户所对应的关系
	 * @param liginName
	 * @param password
	 * @return
	 */
	public  List<HashMap<String,String>>  getUserResources(String liginName, String password);


	
	/**
	 * 登陆
	 * @param  loginName  用户名
	 * @return password 用户密码
	 * @throws Exception
	 */
	public User login(String loginName,String password) throws Exception;
	
	
	/**
	 * 验证用户登陆名唯一性
	 * 
	 * @param  loginName 登陆名
	 * @return true:已存在  false:不存在
	 * @throws Exception
	 */
	public boolean isUserExist(String loginName) throws Exception;
		
	/**
	 * 编辑用户Grid表单
	 * 
	 * @param  user 用户对象
	 * @param  oper Gird操作符     
	 *         add：   添加
     *         edit：编辑
     *         del：   删除
	 * @throws Exception
	 */
	public void editUser(User user, String oper) throws Exception;
	
	
	
	/**
	 * 
	 *根据登入名查询密码
	 * @param loginName
	 * @return password
	 *
	 */
	public String getPasswordByLoginName(String loginName);
	
	
	
	/**
	 * 判断登入名称是否已经存在
	 * @param user
	 * @return
	 */
	public List<User>  searchUserByloginName(User user);
	
	
	/**
	 * 
	 *新增用户
	 * @param user
	 * @param userId
	 *
	 */
	public void addUser(User user,String currentLoginName);
}
